package com.tjetc._1staitc;

public class _1Static {
    /*
        有⼀群⼩孩在玩堆雪⼈,不时有新的⼩孩加⼊,请问如何知道现在共有多少⼈在玩? ，编写程序解决。

        思路分析：
        1.使用传统方法来解决
        2.使用类变量解决当前问题
     */
    public static void main(String[] args) {
        // int count = 0; 如果在类的外部定义一个属性用来进行统计，这样就破坏了类的封装性，从而没有使用OOP的思想
        Child child = new Child();
        // 用来统计小孩的个数 问题是什么？ count这个属性放在对象中 发现表达的含义并不准确
        child.count++;
//        System.out.println(child.count);
        Child child1 = new Child();
        child1.count++;
        System.out.println(child1.count); // 应该是2 实际上1
        // count属性 更应该表示针对类而言 我们把这个属性 叫做类属性/类变量

        // 如果是类变量 就应该更加提现出和类的关系表达 所以对于类变量 我们一般使用类名.属性名 来进行表示
//        child.count++;// 通过对象.属性名调用，这种方式是可以进行调用，但是不推荐
//        Child.count++;
        // 类属性和对象没有关系，所以不需要创建对象即可使用
//        System.out.println(Child.count);
//        System.out.println(child.getCount());
    }

}

class Child {
    // 用来表示小孩对象的个数 个数是针对Child这个类来说 用来表示所有对象共享一块空间的时候
//    int count = 0;
    public static int count = 0; //推荐写法
//    static public int count = 0;

//    public static int getCount() {
//        return count;
//    }
}
